package cn.jlearn.proxy.server.handler.bs;

import cn.jlearn.proxy.common.body.TcpBody;
import cn.jlearn.proxy.common.enums.ProtocolEnum;
import cn.jlearn.proxy.common.handler.AbstractBsHandler;
import cn.jlearn.proxy.common.packet.BsPacket;
import cn.jlearn.proxy.common.packet.TcpPacket;
import cn.jlearn.proxy.server.container.ForwardServer;
import cn.jlearn.proxy.server.container.TcpForwardServer;
import org.tio.core.ChannelContext;
import org.tio.core.Tio;

import java.util.Optional;

/**
 * @author qianyingchao
 * @version 1.0
 * @date 2021/5/11 11:38 上午
 */
public class TcpResHandler extends AbstractBsHandler<TcpBody> {

    @Override
    public Class<TcpBody> bodyClass() {
        return TcpBody.class;
    }

    @Override
    public void handler(BsPacket packet, TcpBody bsBody, ChannelContext channelContext) throws Exception {
        String bsId = bsBody.getBsId();
        TcpPacket tcpPacket = new TcpPacket(bsBody.getBytes());
        if (ProtocolEnum.HTTP.getCode().equals(Optional.ofNullable(bsBody.getProtocol()).orElse(ProtocolEnum.HTTP.getCode()))) {
            Tio.sendToBsId(ForwardServer.serverTioConfig, bsId, tcpPacket);
        } else {
            Tio.sendToBsId(TcpForwardServer.serverTioConfig, bsId, tcpPacket);
        }
    }

}
